package org.cnam.mobileShopping.util;

import java.util.TimerTask;

import org.cnam.mobileShopping.dao.DAOFactory;

import android.content.Context;
import android.os.Handler;
import android.util.Log;

/**
 * Classe de Tache qui va être lancée périodiquement afin de synchroniser tous
 * les produits etc...
 * 
 * @author laurent
 */
public class SynchroTask extends TimerTask {

	/** Context de l'application permettant d'accéder aux preferences */
	private Context context;
	/** Le handler qui va recevoir les messages du Thread de synchro */
	private Handler handler;

	/**
	 * Constructeur permettant de gérer les listes et tout ça
	 * 
	 * @param context
	 */
	public SynchroTask(Context context, Handler handler) {
		this.context = context;
		this.handler = handler;
	}

	@Override
	public void run() {
		// on checke d'abord si on est connecté
		if (MobileShoppingUtils.isConnected(context)) {
			Log.d("MobileShopping", "Synchro en cours...");
			Integer userId = new Integer(
					MobileShoppingUtils.getSharedPreferences(this.context,
							"userid"));
			String dateUpdate = MobileShoppingUtils.getSharedPreferences(
					this.context, "dateUpdate");

			DAOFactory.getCategoryDAO(this.context).synchronise(
					PatternUtil.formatDate(dateUpdate), userId, this.context);
			DAOFactory.getProductDAO(this.context).synchronise(
					PatternUtil.formatDate(dateUpdate), userId, this.context);
			DAOFactory.getUserDAO(this.context).synchronise(
					PatternUtil.formatDate(dateUpdate), userId, this.context);
			DAOFactory.getListeDAO(this.context).synchronise(
					PatternUtil.formatDate(dateUpdate), userId, this.context);
			// et on notifie que des mise à jour ont eu lieu
			handler.sendEmptyMessage(0);
		}
	}
}
